﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using DAO;
using Entidades;
using LisBioGUIWPF.Controls.Alumno;

namespace LisBioGUIWPF.Controls
{
    /// <summary>
    /// Lógica de interacción para AlumnoControl.xaml
    /// </summary>
    public partial class AlumnoControl : UserControl
    {

        private LisBio lisBio;
        private AlumnoData.Operacion oper;

        public AlumnoControl(LisBio lisBio)
        {
            InitializeComponent();
            this.lisBio = lisBio;
            this.lblOperacion.Content = "";
        }

        private void btnUser_Click(object sender, RoutedEventArgs e)
        {
            this.gridBuscar.Visibility = Visibility.Hidden;
            this.lblOperacion.Content = "";

            AlumnoData AlumnoData = new AlumnoData(lisBio, AlumnoData.Operacion.NUEVO, this);
            AlumnoData.txtNombre.Focus();
            this.IsEnabled = false;
            this.lisBio.borderHuella.Child = AlumnoData;
        }

        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            if (sender == this.btnDelete)
            {
                oper = AlumnoData.Operacion.ELIMINAR;
                this.lblOperacion.Content = "Operación Eliminar";
            }
            else if (sender == this.btnModify)
            {
                oper = AlumnoData.Operacion.MODIFICAR;
                this.lblOperacion.Content = "Operación Modificar";
            }

            this.gridBuscar.Visibility = Visibility.Visible;
            ImageControl image = new ImageControl(this.lisBio);
            image.setDefaultImage();
            this.lisBio.borderHuella.Child = image;

            this.listarAlumnos();
            this.comboBuscar.Focus();
        }

        private void btnBuscar_Click(object sender, RoutedEventArgs e)
        {
            if (comboBuscar.SelectedItem != null)
            {
                AlumnoData AlumnoData = new AlumnoData(lisBio, oper, this);
                AlumnoData.txtNombre.Focus();

                EntidadAlumno datosAlumno;
                datosAlumno = (EntidadAlumno)comboBuscar.SelectedItem;

                //Cargando la entidad seleccionada al AlumnoData para que cargue los datos en pantalla
                AlumnoData.Alumno = datosAlumno;
                AlumnoData.cargarDatos();

                this.IsEnabled = false;
                this.lisBio.borderHuella.Child = AlumnoData;
            }
        }

        private void comboBuscar_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key != System.Windows.Input.Key.Escape &&
                e.Key != System.Windows.Input.Key.Down &&
                e.Key != System.Windows.Input.Key.Up &&
                e.Key != System.Windows.Input.Key.Left &&
                e.Key != System.Windows.Input.Key.Right &&
                e.Key != System.Windows.Input.Key.Enter)
            {

                this.comboBuscar.IsDropDownOpen = true;

                //COLOCAR EN LUGAR DE NULL LA LISTA QUE SE VA A FILTRAR
                //Util.FilterCombo(this.comboBuscar, null);
            }
            else if (e.Key == Key.Enter)
            {
                this.btnBuscar_Click(sender, null);
            }

            this.lblOperacion.Content = "";
        }

        /*
         * Lista los investigadores en el comboBuscar de acuerdo al radioButton que este seleccionado. Si se encuentra
         * seleccionada la busqueda por Nombre muestra el nombre, apellido y el legajo, si la busqueda es por legajo se
         * muestra primero el legajo seguido del nombre.
         */

        public void listarAlumnos()
        {
            try
            {
                comboBuscar.Items.Clear();

                List<EntidadBase> entidades = new List<EntidadBase>();
                AlumnoDAO daoAlumno = new AlumnoDAO();

                entidades = daoAlumno.leerTodas();
                for (int i = 0; i < entidades.Count; i++)
                {
                    EntidadAlumno alumno;
                    alumno = (EntidadAlumno)entidades[i];
                    comboBuscar.Items.Add(alumno);
                }

                if ((bool)radioNombre.IsChecked)
                {
                    comboBuscar.DisplayMemberPath = "NombreYLegajo";
                }
                else
                {
                    comboBuscar.DisplayMemberPath = "LegajoYNombre";
                }
                comboBuscar.SelectedValuePath = "Id";
            }
            catch (Exception exc) { }
        }

        private void radio_Checked(object sender, RoutedEventArgs e)
        {
            listarAlumnos();
        }
    
    }
}
